1. Field of the Invention
This invention relates generally to systems, methods and apparatus for controlling digital electronic devices, and more particularly for controlling applications, services, platforms, and/or extensions on a digital electronic device.
2. Description of the Related Art
FIG. 1 illustrates a communication network, in simplified form for explanation. The communication network includes, for example, a conventional cellular network 10 which may include, for example, GSM, GPRS, EDGE, cdmaOne, cdma2000, WCDMA, and UMTS networks, although other access technologies can also be used. The cellular network 10 is operated by mobile network operators (not shown), which provide voice and/or data services to customers. Three illustrative devices are shown connected to the cellular network 10, namely a cell phone 11, a smartphone 12, and a mobile PC 13 with a cellular network connection device installed. The communications network also includes an IP network and service infrastructure 20, which is interconnected with the cellular network 10 through a gateway (not shown). The IP network 20 provides IP services through both wired and wireless means. Six networked devices are shown connected to the IP network 20, illustratively a server 21, a game console 22, a digital audio/video device such as a set-top-box 24 to which a digital television 23 is connected, a smart digital appliance 25 (such as, for example, a security device, a web camera, or a smart kitchen appliance), a desktop personal computer 26, a mobile personal computer 27 (such as, for example, a laptop, tablet, or netbook computer), and a smartphone 28. Each of the digital electronic devices include suitable software that interfaces with various user applications on the device and functions as a user agent to establish, modify, and terminate communication sessions between any of the networked digital electronic devices, and across different networks.
Services are provided by the network operator and service providers through the network. Services are accessed, delivered, and used through specialized technologies, network and application protocols, and content methods, and operate using various standards. Some functions and applications operate from device-to-device directly and others are originated by servers in the service infrastructure or by servers connected through the internet. The applications on the devices must support the specific standards and technologies used by the various networks, services, content, and other device applications.
Digital electronic devices such as devices 21-28 include application software, which typically is written for the particular type of digital electronic device. Such application software tends to be complex, since it includes not only the user interface and application functions that are specific to the application or service, but also elements that are specific to the end-to-end connection, delivery, and processing of protocols and content as well as the device platform, operating system environment, application environment, and the network and service systems used. Unfortunately, the difficulty of developing device applications that individually deal with the complexity of managing and supporting a variety of device platforms, application environments, technology and standards, networks, and service systems has lead to long development and deployment cycles, high cost and risk, and inefficient use and duplication of resources for application developers, device suppliers, and service providers. In addition, this high time and cost has lead to single purpose applications and services for new service and application capabilities. The monolithic and vertical nature of these complex applications also limits the available developer community that is capable of creating the applications, increases the cost for specialized training and tools, and reduces flexibility for providers and users to adapt and repurpose the capabilities and functions. They are unable to easily add new applications or user interfaces that support additional uses, adapt for new markets or personalize the use to individual needs or usage styles. This limited application support and availability limits the adoption, use, and economic value of the functions and services.
The technologies and standards used for applications and services continue to evolve and change. As networks, service applications, and content changes, the applications are also changed to include these new requirements, technologies, and standards. Significant time and investment is expended to change each application, to test each application in each device and application environment, and test each application with the various network and service application systems. This adds considerable time, risk, and cost to technology and functional upgrades, and slows transitions to new standards and capabilities.
The number and type of devices has grown dramatically, and each device category, manufacturer, and service may have a wide range of device platforms and operating systems, and multiple application environments, and are required to interoperate across many networks and systems. Since applications are device and service specific, this has limited the availability and use of new functions and capabilities to selected devices. The time and investment required to implement a new capability across an entire, complex device portfolio continues to increase as the range and type of devices increases. Developers, device suppliers, and service provider need a better means to support many device types and models with lower incremental time, cost, and risk to fully utilize investments and to offer services and value to more customers and markets.
The industry has different sets of technology, products, providers and business models that must come together to deliver complete end-to-end services and applications. These may be referred to as industry ecosystems. The primary ecosystems include device platforms, application environments and developer communities, technology and standards, and networks and service infrastructure systems.
The device ecosystem includes components and platforms which vary by category and supplier, operating system environments, and various electrical, software, mechanical and industrial design elements. They include application environments such as native operating system specific application environments such as Windows, MacOS, Linux, Symbian, BREW, and a variety of specialized real-time-operating systems. There are multiple versions and adaptations of general procedural runtime application environments such as Java, declarative runtime application environments such as Adobe Flash and Air, WebKit Widget Runtime, Yahoo Widgets, and browser based application environments such as Google Gadgets and AJAX enabled mobile and PC browsers. Each of these environments have unique capabilities, advantages and disadvantages, and are suitable for different levels and types of applications. They require specific knowledge and tools and tend to have communities of developers based on the relative number of devices and services that support them and the economic value of developing for those environments.
Many devices include more than one application environment. For example, most smartphones include a native programming environment such as Windows Mobile, Symbian, or Linux, and these may be the preferred environments for core applications that are performance sensitive, security sensitive, or need access to specific platform and OS resources not available in other environments. These are typically very complex applications written in the ‘C’ programming language using the specific platform and operating system resources available, and require special knowledge and skill for the device, programming environment and tools, service systems, specialized technologies, and applicable standards. The device may also include a procedural runtime application environment such as Java. These provide a higher level procedural language and are generally less device specific. However, the functions of the applications are limited to the capabilities supported by the application environment. These environments generally do not provide low-level access to device resources. The applications tend to require less modification to use on other devices with a compatible environment, but they are usually less capable and perform slower than native applications. The device may also include a declarative runtime environment. These environments use more web-like programming and content methods such as scripting and markup languages. Adobe's Flash and the industry standard Asynchronous Java and XML (AJAX) based environments are common examples. In some cases, these application environments may also be installed by the user if they are not included on the device. This means that the very large community of web developers is capable of quickly developing applications for the environment and dynamically delivering them to the device as needed or desired. Unfortunately, the limited programming and application management capabilities of these environments and their lack of access to advanced and specialized functions has limited their use in developing applications for sophisticated services and use that require more specialized capabilities.
The current situation requires developers to address all the complex ecosystem requirements in each application and then to modify the entire application for each combination of device, technology and standards, network, and service. In general, the environments that have the largest developer communities are easier to develop in, and provide more portability across devices and services. However, they also have limited capabilities and are slow to support new technology and standards. This limits the availability of applications for specific needs and markets and decreases the economic value of the capabilities.